package com.itheima.servetdemo1.controller;

import com.itheima.servetdemo1.service.RollCallService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

//控制层
@RestController
@RequestMapping("/api")
public class RollCallController {

    @Autowired
    private  RollCallService rollCallService;



    //随机点名
    @GetMapping("/random-call")
    public String randomCall() {
        return rollCallService.randomCall();
    }


     //重置点名记录接口
     // 清空已点名记录，恢复初始状态

    @PostMapping("/reload-students")
    public void reloadStudents() {
        rollCallService.reloadStudents();
    }

    /**
     * 获取剩余未点名学生列表接口
     * @return 返回学生姓名到小组的映射关系
     */
    @GetMapping("/remaining-students")
    public Map<String, String> getRemainingStudents() {
        return rollCallService.getStudentMap();
    }

    /**
     * 设置学生最大被点名次数
     * @param times 最大次数
     */
    @PostMapping("/set-max-call-times")
    public void setMaxCallTimes(@RequestParam int times) {
        rollCallService.setMaxCallTimes(times);
    }

    /**
     * 获取当前设置的最大点名次数
     * @return 最大点名次数
     */
    @GetMapping("/get-max-call-times")
    public int getMaxCallTimes() {
        return rollCallService.getMaxCallTimes();
    }

    /**
     * 获取所有学生被点名次数
     * @return 学生姓名到点名次数的映射
     */
    @GetMapping("/student-call-count")
    public Map<String, Integer> getStudentCallCount() {
        return rollCallService.getStudentCallCount();
    }

    /**
     * 设置指定学生的最大点名次数
     * @param studentName 学生姓名
     * @param times 最大次数
     * @return 设置结果
     */
    @PostMapping("/set-student-max-call-times")
    public String setStudentMaxCallTimes(
            @RequestParam String studentName,
            @RequestParam int times) {
        boolean success = rollCallService.setStudentMaxCallTimes(studentName, times);
        return success ? "设置成功" : "设置失败，请检查学生姓名和次数是否正确";
    }

    /**
     * 获取指定学生的最大点名次数
     * @param studentName 学生姓名
     * @return 最大点名次数
     */
    @GetMapping("/get-student-max-call-times")
    public int getStudentMaxCallTimes(@RequestParam String studentName) {
        return rollCallService.getStudentMaxCallTimes(studentName);
    }
}